//package com.shiku.im.push.service;
//
//
//import com.alibaba.fastjson.JSONObject;
//import com.shiku.im.push.vo.MsgNotice;
//import com.shiku.utils.StringUtil;
//import com.xiaomi.xmpush.server.*;
//import com.xiaomi.xmpush.server.Message.Builder;
//import org.springframework.util.StringUtils;
//
//import java.io.IOException;
//import java.net.URLEncoder;
//import java.util.List;
//
////小米通知栏推送集成
//
//public class XMPushService extends PushServiceUtils {
//
//    public static Sender sender;
//
//    public static Sender getSender() {
//        if (null == sender) {
//            sender = new Sender(pushConfig.getXm_appSecret());//申请到的AppSecret
//        }
//        return sender;
//    }
//
////	public static Sender sender = new Sender(pushConfig.getXm_appSecret());//申请到的AppSecret
//
//    /**
//     * 使用API创建小米自定义渠道ID, 或者登陆小米推送后台手动添加
//     * 创建后不会立即生效，需过几分钟
//     * 推荐到小米推送后台操作创建自定义渠道
//     */
//    public static void createChannelId() {
//        try {
//            String sountUrl = "android.resource://" + pushConfig.getPackageName() + "/raw/dial";
//            ChannelHelper channelHelper = new ChannelHelper(pushConfig.getXm_appSecret());
//            ChannelInfo videoChannelInfo = new ChannelInfo.Builder()
//                    .channelId("superVideoMessage") //必填，通知类别的ID，长度不超过 200 字符
//                    .channelName("音视频消息通知") //必填，通知类别的名称，长度不超过40字符
//                    .channelDesc("音视频消息通知的自定义渠道") //可选，通知类别的描述，长度不超过300字符
//                    .notifyType(0) //必填，通知的效果类型（1-使用默认提示音提示；2-使用默认震动提示；4-使用默认led灯光提示；-1-以上三种效果都有；0-以上三种效果都无）
//                    .soundUrl(sountUrl) //可选，通知的自定义铃声uri，格式介绍请参见 “4.1 自定义铃声”
//                    .build();
//            Result videoResult = channelHelper.addNewChannel(videoChannelInfo, 1);
//            log.info("创建自定义渠道 音视频result ：{}", JSONObject.toJSONString(videoResult));
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//
//    /**
//     * 获取当前有效渠道
//     * @param
//     * @return
//     */
//    private static Result getChannleList() {
//        try {
//            ChannelHelper channelHelper = new ChannelHelper(pushConfig.getXm_appSecret());
//            Result result = channelHelper.getChannelList(1);
//            return result;
//        } catch (IOException e) {
//            e.printStackTrace();
//            log.error(e.getMessage(), e);
//            return null;
//        }
//    }
//
//    /**
//     * 废弃Channel
//     * 建议到小米推送后台操作取消自定义渠道ID
//     * @param
//     * @return
//     */
//    private static void deleteChannle() {
//        try {
//            ChannelHelper channelHelper = new ChannelHelper(pushConfig.getXm_appSecret());
//            channelHelper.discardChannel("渠道ID", 1);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//
//    }
//
//    /**
//     * 通知栏推送
//     */
//    public static void pushToRegId(MsgNotice notice, String callNum, String token, boolean flag) {
//        if (StringUtil.isEmpty(token)) {
//            return;
//        }
//        // 服务端创建渠道，推荐到小米推送后台创建渠道信息
//        if (1 == pushConfig.getXm_channle()) {
//            createChannelId();
//        }
//        if (StringUtils.isEmpty(notice.getText())) {
//            notice.setText("收到一条消息...");
//        }
//        String messagePayload = notice.getText();
//        String title = notice.getTitle();
//        String description = notice.getText();
//        if (notice.getIsGroup()) {
//            description = notice.getText().replace(notice.getGroupName(), "");
//            title = notice.getTitle();
//        }
//
//        Message message = null;
//        Builder builder = new Message.Builder()
//                .title(title)
//                .description(description).payload(messagePayload)
//                .restrictedPackageName(pushConfig.getPackageName())
//                .extra(Constants.EXTRA_PARAM_NOTIFY_EFFECT, Constants.NOTIFY_LAUNCHER_ACTIVITY);
//        //.extra(Constants.EXTRA_PARAM_INTENT_URI, "intent:#Intent;component=com.xiaomi.mipushdemo/.NewsActivity;end")
//
//        //自定义参数
//        builder.extra("from", notice.getFrom() + "");
//        builder.extra("fromUserName", notice.getName() + "");
//        builder.extra("messageType", notice.getType() + "");
//        builder.extra("to", notice.getTo() + "");
//        if (100 == notice.getType() || 110 == notice.getType() ||
//                115 == notice.getType() || 120 == notice.getType()) {
//            builder.extra("callNum", callNum + "");
////	    		 builder.passThrough(1);  // 不使用透传消息 zhm
//        }
//
//        String url = null;
//        if (notice.getIsGroup()) {
//            url = "intent://" + pushConfig.getPackageName() + "/notification#Intent;scheme=sk;launchFlags=0x10000000;S.userId=" + notice.getRoomJid() + ";end";
//        } else {
//            url = "intent://" + pushConfig.getPackageName() + "/notification#Intent;scheme=sk;launchFlags=0x10000000;S.userId=" + notice.getFrom() + ";end";
//        }
//        String channleId = flag ? "superVideoMessage" : "普通消息通知";
//        // 自定义渠道（兼容旧版没有自定义渠道推送）
//        Result channleResult = getChannleList();
//        org.json.simple.JSONObject channleJSON = channleResult.getData();
//        List<Object> channleList = (List<Object>) channleJSON.get("list");
//        if (!channleList.isEmpty()) {
//            message = builder.notifyType(1).extra(Constants.EXTRA_PARAM_SOUND_URI, "android.resource://" + pushConfig.getPackageName() + "/raw/dial").extra(Constants.EXTRA_PARAM_INTENT_URI, url)
//                    .extra("channel_id", channleId).build();
//        } else {
//            message = builder.notifyType(1).extra(Constants.EXTRA_PARAM_SOUND_URI, "android.resource://" + pushConfig.getPackageName() + "/raw/dial").extra(Constants.EXTRA_PARAM_INTENT_URI, url).build();
//        }
//        /*
//            message = builder.notifyType(1).extra(Constants.EXTRA_PARAM_NOTIFY_EFFECT, Constants.NOTIFY_ACTIVITY).extra(Constants.EXTRA_PARAM_INTENT_URI, url)     // 使用默认提示音提示
//            .extra("channel_id",channleId).build();
//        */
//
//
//        try {
//            Result result = getSender().send(message, token, 3);
//            log.info(result.toString());
//        } catch (Exception e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        }
//
//    }
//
//    public static void pushTransToRegId(MsgNotice notice, String callNum, String token) {
//        if (StringUtil.isEmpty(token)) {
//            return;
//        }
//        if (StringUtils.isEmpty(notice.getText())) {
//            notice.setText("收到一条消息...");
//        }
//        String messagePayload = notice.getText();
//        String title = notice.getTitle();
//        String description = notice.getText();
//        if (notice.getIsGroup()) {
//            description = notice.getText().replace(notice.getGroupName(), "");
//            title = notice.getTitle();
//        }
//
//        Message message = null;
//        Builder builder = new Message.Builder()
//                .title(title)
//                .description(description).payload(messagePayload)
//                .restrictedPackageName(pushConfig.getPackageName())
//                .extra(Constants.EXTRA_PARAM_NOTIFY_EFFECT, Constants.NOTIFY_LAUNCHER_ACTIVITY);
//        //.extra(Constants.EXTRA_PARAM_INTENT_URI, "intent:#Intent;component=com.xiaomi.mipushdemo/.NewsActivity;end")
//
//        //自定义参数
//        builder.extra("from", notice.getFrom() + "");
//        builder.extra("fromUserName", notice.getName() + "");
//        builder.extra("messageType", notice.getType() + "");
//        builder.extra("to", notice.getTo() + "");
//
//        builder.extra("callNum", callNum + "");
//        builder.passThrough(1);
//
//        message = builder.notifyType(1)     // 使用默认提示音提示
//                .build();
//        try {
//
//            Result result = sender.send(message, token, 3);
//            log.info(result.toString());
//        } catch (Exception e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        }
//
//    }
//
//
//    /**
//     * @throws Exception
//     * @Description:小米的全量推送
//     **/
//    protected static void sendBroadcast(MsgNotice notice) throws Exception {
//        String url;
//        if (null == notice.getObjectId()) {
//            url = "intent://" + pushConfig.getPackageName() + "/notification#Intent;scheme=sk;launchFlags=0x10000000;end";
//        } else {
//            url = "intent://" + pushConfig.getPackageName() + "/notification#Intent;scheme=sk;launchFlags=0x10000000;S.url=" + URLEncoder.encode(notice.getObjectId(), "UTF-8") + ";end";
//        }
//        Constants.useOfficial();
//        String messagePayload = "This is a message";
//        String title = notice.getTitle();
//        String description = notice.getText();
////	    String topic = "testTopic";
//        Message message = new Message.Builder()
//                .title(title)
//                .description(description).payload(messagePayload)
//                .restrictedPackageName(pushConfig.getPackageName())
//                .notifyType(1)     // 使用默认提示音提示
//                .extra(Constants.EXTRA_PARAM_NOTIFY_EFFECT, Constants.NOTIFY_ACTIVITY).extra(Constants.EXTRA_PARAM_INTENT_URI, url)
//                .build();
////	    sender.broadcast(message, topic, 3); //根据topic, 发送消息到指定一组设备上
//        Result broadcastAll = sender.broadcastAll(message, 3);
//        log.info("XIAO MI PUSH RESULT : {}", JSONObject.toJSONString(broadcastAll));
//    }
//
//}
//
